package com.cw.base.common.model.enums;


import com.cw.lang.common.enums.IEnum;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 公共错误枚举定义
 *
 * @author sunjm13534
 * @version $Id: EnumCommonErrMsg.java, v 0.1 Jan 9, 2017 2:41:32 PM sunjm13534 Exp $
 */
@Getter
@AllArgsConstructor
public enum EnumCommonErrMsg implements IEnum {
    /** ------------------------校验类异常----------------------- */
    PROPERTY_NULL("000001", "字段为空"),
    /** 字段长度不符 */
    PROPERTY_LENGTH("000002", "字段长度不符"),
    /** 字段规则不符 */
    PROPERTY_PATTERN("000003", "字段规则不符"),

    /** 网络异常 */
    RPC("000004", "网络异常"),
    /** 系统异常 */
    SYSTEM_ERR("000005", "系统异常"),

    /** 验证码过期 */
    SMS_EXPIRE("000006", "验证码过期"),
    /** 验证码获取过于频繁 */
    SMS_GET_OFTEN("000007", "验证码获取过于频繁"),

    /** 幂等性异常 */
    SIMPLE_IDEMPOTENT_ERR("000008", "幂等性异常"),

    /** 缓存获取异常 */
    REDIS_ERR("000009", "缓存获取异常"),

    /** 操作OSS错误 */
    OSS_ERR("000010", "操作OSS错误"),
    /** 文件上传错误 */
    FILE_UPLOAD_ERR("000011", "文件上传错误"),
    /** 文件下载错误 */
    FILE_DOWNLOAD_ERR("000012", "文件下载错误"),
    /** 对象为空 */
    OBJECT_NULL("000013", "对象为空"),
        ;

    /** 状态码 **/
    private String code;

    /** 状态描述 **/
    private String description;


    /**
     * 根据编码查找枚举
     *
     * @param code 编码
     * @return {@link EnumCommonErrMsg} 实例
     **/
    public static EnumCommonErrMsg find(String code) {
        for (EnumCommonErrMsg frs : EnumCommonErrMsg.values()) {
            if (frs.getCode().equals(code)) {
                return frs;
            }
        }
        return null;
    }
}
